package com.zerdoor.dao;

import java.util.List;
import java.util.Map;

/**
 * 任务签约 持久层接口
 *
 * Created by zhongjieyu on 2014/12/30.
 */
public interface ITaskSigningDao {


    /**
     * 根据项目ID查询任务合同名
     * @param param
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findContractNameByItemId(Map<String,Object> param) throws Exception;


    /**
     * 根据合同ID查询合同数据
     * @param contractId
     * @return
     * @throws Exception
     */
    Map<String,Object> findContractByContractId(int contractId ) throws Exception;

    /**
     * 查询合同条例
     * @return
     * @throws Exception
     */
    String findTermsContract() throws Exception;


    /**
     * 根据合同ID修改合同信息
     * @param param
     * @throws Exception
     */
    void updateContractByContractId(Map<String,String> param) throws Exception;

    /**
     * 根据阶段ID修改阶段数据
     * @param param
     * @throws Exception
     */
    void updateItemStageById(Map<String,String> param) throws Exception;


    /**
     * 插入阶段数据
     * @param param
     * @throws Exception
     */
    void insertItemStage(Map<String,String> param) throws Exception;

    /**
     * 根据阶段ID删除阶段数据
     * @param stageId 阶段ID
     * @throws Exception
     */
    void deleteItemStageById(String stageId) throws Exception;

    /**
     * 根据合同ID删除阶段数据
     * @param contractId 合同ID
     * @throws Exception
     */
    void deleteItemStageByContractId(String contractId) throws Exception;


    /**
     * 根据合同ID查询合同阶段数据
     * @param contractId
     * @return
     * @throws Exception
     */
    List<Map<String,Object>> findItemStageByContractId(int contractId) throws Exception;


    /**
     * 委托方确认合同
     * @param contractId
     * @throws Exception
     */
    void updateBaileSureContractByContractId(int contractId) throws Exception;

    /**
     * 艺术家确认合同
     * @param contractId
     * @throws Exception
     */
    void updateArtistSureContractByContractId(int contractId) throws Exception;

    /**
     * 根据项目ID查询主订单数据
     * @param item_id 项目ID
     * @return
     * @throws Exception
     */
    Map findOrderTaskByItemId(String item_id) throws Exception;

    /**
     * 根据任务订单ID修改任务订单表数据
     * @param orderTask
     * @throws Exception
     */
    void updateOrderTaskById(Map orderTask) throws Exception;

    /**
     * 新增项目订单
     * @param orderItem
     * @throws Exception
     */
    void insertOrderItem(Map orderItem) throws Exception;

    /**
     * 根据当前用户查询是否首次发包推广
     * @param presenter
     * @return
     * @throws Exception
     */
    int findUserIspoSenderByPresenter(String presenter) throws Exception;

    /**
     * 根据推荐者ID修改推荐者首次推广状态
     * @param presenter
     * @throws Exception
     */
    void updateUserIspoSenderByPresenter(String presenter) throws Exception;

    /**
     * 根据用户ID查询当前用户推荐人ID
     * @param userId 用户ID
     * @return
     * @throws Exception
     */
    String findPresenterByUserId(String userId) throws Exception;

    /**
     * 插入推广费订单表
     * @param orderPopurMap
     * @throws Exception
     */
    void insertOrderPopur(Map orderPopurMap) throws Exception;

    /**
     * 插入手续费订单表
     * @param orderFeeMap
     * @throws Exception
     */
    void insertOrderFee(Map orderFeeMap) throws Exception;

    /**
     * 插入阶段明细订单表
     * @param orderStageMap
     * @throws Exception
     */
    void insertOrderStage(Map orderStageMap) throws Exception;

    /**
     * 根据任务订单ID查找该项目预存资金剩余
     * @param orderTaskId
     * @return
     * @throws Exception
     */
    float findOrderTaskPrestoreSurplus(String orderTaskId) throws Exception;


    /**
     * 根据ID修改阶段进行状态
     * @param param
     * @throws Exception
     */
    void updateItemStageStatusById(Map param) throws Exception;

    /**
     * 根据任务订单ID修改任务订单剩余预存金额
     * @param param
     * @throws Exception
     */
    void updateOrderTaskPrestoreSurplus(Map param) throws Exception;

//    /**
//     * 根据任务ID查询统计是否还有未完成签订的合同
//     * @param item_id
//     * @return
//     * @throws Exception
//     */
//    int findCountUnfinishedContract(String item_id) throws Exception;

    /**
     * 根据任务ID查询已确认计件数量
     * @param item_id
     * @return
     * @throws Exception
     */
    int findSumSurePieceNum(String item_id) throws Exception;

    /**
     * 根据任务ID查询总计件数量
     * @param item_id
     * @return
     * @throws Exception
     */
    int findSumPieceNum(String item_id) throws Exception;

    /**
     * 根据任务ID修改任务进度
     * @param item_id
     * @throws Exception
     */
    void updateCurrentProgressByTaskId(String item_id) throws Exception;

}
